Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo fornece comentários complementares à documentação de referência para esta API.
A HashSet<T> classe fornece operações de conjunto de alto desempenho. Um conjunto é uma coleção que não contém elementos duplicados e cujos elementos não estão em nenhuma ordem específica.
A capacidade de um HashSet<T> objeto é o número de elementos que o objeto pode conter. A capacidade de um HashSet<T> objeto aumenta automaticamente à medida que os elementos são adicionados ao objeto.
A classe HashSet<T> se baseia no modelo de conjuntos matemáticos e fornece operações de conjunto de alto desempenho semelhantes ao acesso às chaves das coleções Dictionary<TKey,TValue> ou Hashtable. Em termos simples, a HashSet<T> classe pode ser considerada como uma Dictionary<TKey,TValue> coleção sem valores.
Uma HashSet<T> coleção não é classificada e não pode conter elementos duplicados. Se a duplicação de ordem ou elemento for mais importante do que o desempenho do aplicativo, considere usar a List<T> classe junto com o Sort método.
HashSet<T> fornece muitas operações de conjuntos matemáticos, como adição de conjuntos (uniões) e subtração de conjuntos. A tabela a seguir lista as operações fornecidas HashSet<T> e seus equivalentes matemáticos.
| Operação HashSet | Equivalente matemático |
|---|---|
| UnionWith | União ou adição definida |
| IntersectWith | Cruzamento |
| ExceptWith | Definir subtração |
| SymmetricExceptWith | Diferença simétrica |
Além das operações de conjunto listadas, a HashSet<T> classe também fornece métodos para determinar a igualdade de conjuntos, a sobreposição de conjuntos e se um conjunto é um subconjunto ou um superconjunto de outro conjunto.
Somente .NET Framework: Para objetos muito grandes HashSet<T>, você pode aumentar a capacidade máxima para 2 bilhões de elementos em um sistema de 64 bits, definindo o atributo enabled do elemento de configuração <gcAllowVeryLargeObjects> para true no ambiente de execução.
A classe HashSet<T> implementa a interface ISet<T>.
Operações de conjunto com HashSet e LINQ
O LINQ fornece acesso às operações de conjunto Distinct, Union, Intersect e Except em qualquer fonte de dados que implemente as interfaces IEnumerable ou IQueryable.
HashSet<T> fornece uma coleção maior e mais robusta de operações de conjunto. Por exemplo, HashSet<T> fornece comparações como IsSubsetOf e IsSupersetOf.
A principal diferença entre operações de conjunto LINQ e HashSet<T> operações é que as operações de conjunto LINQ sempre retornam uma nova IEnumerable<T> coleção, enquanto os HashSet<T> métodos equivalentes modificam a coleção atual.
Normalmente, se você precisar criar um novo conjunto ou se seu aplicativo precisar de acesso apenas às operações de conjunto fornecidas, o uso de operações de conjunto LINQ em qualquer IEnumerable<T> coleção ou matriz será suficiente. No entanto, se o aplicativo exigir acesso a operações de conjunto adicionais ou se não for desejável ou necessário criar uma nova coleção, use a HashSet<T> classe.
A tabela a seguir mostra as operações HashSet<T> e suas operações de conjunto LINQ equivalentes.
| Operação HashSet | Equivalente a LINQ |
|---|---|
| UnionWith | Union |
| IntersectWith | Intersect |
| ExceptWith | Except |
| Não fornecido. | Distinct |
| SymmetricExceptWith | Não fornecido. |
| Overlaps | Não fornecido. |
| IsSubsetOf | Não fornecido. |
| IsProperSubsetOf | Não fornecido. |
| IsSupersetOf | Não fornecido. |
| IsProperSupersetOf | Não fornecido. |
| SetEquals | Não fornecido. |